<?php
namespace Admin\Controller;

use Admin\Model\UserModel;
use Org\Util\String;
use Think\Controller;

/**
 *  用户登录处理控制器
 *  by 周文晓 2017年03月27日
 */
class UserController extends Controller {

    //初始化执行操作,如果用户存在cookie或者存在session则直接进入
    public function __construct() {
        parent::__construct();
        //验证cookie,判断用户是否记住一周免登录
        if(cookie('remember'))
            $this->redirect('Index/index');
        if(session('?userinfo'))
            $this->redirect('Index/index');
    }

    //登录页面展示与登录提交操作
    public function login() {
        if(IS_AJAX) {
            // 接收ajax发送的数组数据
            $user_info = I('post.');
            // 创建数据对象,进行自动数据验证
            $UserModel = new UserModel();
            if(! $UserModel->create($user_info,2)) {
                $this->error($UserModel->getError(),'',true);
            }
            // 根据用户名获取该用户记录
            $user = $UserModel->getUserInfo($user_info['username']);
            if(count($user) > 0) {
               // 验证用户密码是否正确
               if( checkPassword($user_info['password'], $user['password'], $user['salt'])) {
                   //用户点击'记住我'时保存信息到cookie
                   if(I('post.remember',0)) {
                       cookie('remember', true, C('REMBER_ME_EXPIRE'));
                   }
                   // 登录成功设置session存储
                   session('userinfo', $user);
                   $this->success('登录成功,正在为您跳转...',U('Index/index'),true);
                   exit;
               } else {
                   $this->error('用户名密码不正确,请重新登录', '', true);
               }
            } else {
                $this->error('登录信息填写不正确,请检查后重新登录', '', true);
            }
        }
        $this->display();
    }

    // 用户注册展示页与执行注册提交操作
    public function register() {
        if(IS_AJAX) {
            $user_info = I('post.');
            // 创建数据对象,进行自动数据验证
            $UserModel = new UserModel();
            if(! $UserModel->create($user_info, 1)) {
                $this->error($UserModel->getError(),'',true);
            } else {
                if($UserModel->addUser()) {
                    $this->success('注册成功', U('User/login'), true);
                } else {
                    $this->error('注册失败','',true);
                }
            }
        }
        $this->display();
    }
}
